package collection;

import java.util.ArrayList;
import java.util.List;

/**
 * java.util.List接口
 * List继承自Collection,特点是可以存放重复元素且有序
 * 其提供了一套可以通过下标操作元素的方法
 *
 * 常用实现类：
 * java.util.ArrayList:内部使用数组实现，查询性能更好
 * java.util.Linkedlist:内部使用链表实现,增删性能更好，首位增删性能最佳
 * 在对性能没有特别苛刻的要求下，默认首选使用ArrayList即可.
 */
public class ListDemo1 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>(); //查找元素快
        //List<String> list = new LinkedList<>(); 增删元素快
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println(list);

        /*
            E get(int index)
            获取指定下标对应的元素
         */
        String str = list.get(2);
        System.out.println(str);

        for (int i = 0; i < list.size(); i++) {
            str = list.get(i);
            System.out.println(str);
        }

        /*
            E set(int index,E e)
            将给定元素设置到指定位置上，返回值为该位置原有元素
            替换元素操作
         */
        //[one, two, three, four, five]
        System.out.println(list);
        String old = list.set(2,"six");
        //[one, two, six, four, five]
        System.out.println(list);

        System.out.println(old); //three

        //集合翻转
       /* String one = list.set(0, list.get(4));
        String tow = list.set(1, list.get(3));
        list.set(2,list.get(2));
        list.set(3,tow);
        list.set(4,one);
        System.out.println(list);*/

        for (int i = 0; i < list.size()/2; i++) {
            //获取正数位置上的元素
            String s = list.get(i);
            //正数位置上的元素设置到倒数位置上
            s = list.set(list.size() - 1 - i, s); //返回值为原倒数位置的元素
            //将倒数位置的元素设置到正数位置上
            list.set(i,s);
        }
        System.out.println(list);


    }
}
